﻿using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace NTmdb.TestProject
{
    /// <summary>
    ///     This is a test class for TmdbPersonInformationTest and is intended
    ///     to contain all TmdbPersonInformationTest Unit Tests
    /// </summary>
    [TestClass]
    public class TmdbPersonInformationTest
    {
        /// <summary>
        ///     A test for TmdbPersonInformation Constructor
        /// </summary>
        [TestMethod]
        public void TmdbPersonInformationConstructorTest()
        {
            var target = new TmdbPersonInformation();
            Assert.IsNotNull( target );
        }

        /// <summary>
        ///     A test for AlsoKnownAs
        /// </summary>
        [TestMethod]
        public void AlsoKnownAsTest()
        {
            var target = new TmdbPersonInformation();
            var expected = new List<string>();
            List<string> actual;
            target.AlsoKnownAs = expected;
            actual = target.AlsoKnownAs;
            Assert.AreSame( expected, actual );
        }

        /// <summary>
        ///     A test for Biography
        /// </summary>
        [TestMethod]
        public void BiographyTest()
        {
            var target = new TmdbPersonInformation();
            string expected = Guid.NewGuid().ToString();
            string actual;
            target.Biography = expected;
            actual = target.Biography;
            Assert.AreEqual( expected, actual );
        }

        /// <summary>
        ///     A test for Birthday
        /// </summary>
        [TestMethod]
        public void BirthdayTest()
        {
            var target = new TmdbPersonInformation();
            string expected = Guid.NewGuid().ToString();
            string actual;
            target.Birthday = expected;
            actual = target.Birthday;
            Assert.AreEqual( expected, actual );
        }

        /// <summary>
        ///     A test for Changes
        /// </summary>
        [TestMethod]
        public void ChangesTest()
        {
            var target = new TmdbPersonInformation();
            var expected = new TmdbChanges();
            TmdbChanges actual;
            target.Changes = expected;
            actual = target.Changes;
            Assert.AreSame( expected, actual );
        }

        /// <summary>
        ///     A test for Credits
        /// </summary>
        [TestMethod]
        public void CreditsTest()
        {
            var target = new TmdbPersonInformation();
            var expected = new TmdbPersonCredits();
            TmdbPersonCredits actual;
            target.Credits = expected;
            actual = target.Credits;
            Assert.AreSame( expected, actual );
        }

        /// <summary>
        ///     A test for Deathday
        /// </summary>
        [TestMethod]
        public void DeathdayTest()
        {
            var target = new TmdbPersonInformation();
            string expected = Guid.NewGuid().ToString();
            string actual;
            target.Deathday = expected;
            actual = target.Deathday;
            Assert.AreEqual( expected, actual );
        }

        /// <summary>
        ///     A test for Homepage
        /// </summary>
        [TestMethod]
        public void HomepageTest()
        {
            var target = new TmdbPersonInformation();
            string expected = Guid.NewGuid().ToString();
            string actual;
            target.Homepage = expected;
            actual = target.Homepage;
            Assert.AreEqual( expected, actual );
        }

        /// <summary>
        ///     A test for Images
        /// </summary>
        [TestMethod]
        public void ImagesTest()
        {
            var target = new TmdbPersonInformation();
            var expected = new TmdbPersonImages();
            TmdbPersonImages actual;
            target.Images = expected;
            actual = target.Images;
            Assert.AreSame( expected, actual );
        }

        /// <summary>
        ///     A test for IsAdultActor
        /// </summary>
        [TestMethod]
        public void IsAdultActorTest()
        {
            var target = new TmdbPersonInformation();
            bool expected = new Random().Next( 0, Int32.MaxValue ) % 2 == 0;
            bool actual;
            target.IsAdultActor = expected;
            actual = target.IsAdultActor;
            Assert.AreEqual( expected, actual );
        }

        /// <summary>
        ///     A test for PlaceOfBirth
        /// </summary>
        [TestMethod]
        public void PlaceOfBirthTest()
        {
            var target = new TmdbPersonInformation();
            string expected = Guid.NewGuid().ToString();
            string actual;
            target.PlaceOfBirth = expected;
            actual = target.PlaceOfBirth;
            Assert.AreEqual( expected, actual );
        }

        /// <summary>
        ///     A test for Serialize & Deserialize
        /// </summary>
        [TestMethod]
        public void SerializeDeserializeTest()
      {
            Assert.Inconclusive();
        }
    }
}